{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Building prefix dict from the default dictionary ...\n",
      "Loading model from cache /var/folders/_w/vb15wg_n4fn03mktp1gxwkv80000gn/T/jieba.cache\n",
      "Loading model cost 0.687 seconds.\n",
      "Prefix dict has been built succesfully.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "分词总数: 17746\n",
      "示例: ['同志', '们', '：', '现在', '，', '我', '代表', '第十八届', '中央委员会', '向', '大会', '作', '报告', '。', ' ', '\\n', '\\n', '中国共产党', '第十九次', '全国代表大会']\n"
     ]
    }
   ],
   "source": [
    "# 1.分词\n",
    "import jieba\n",
    "with open('report19.txt') as f:\n",
    "    s = f.read()\n",
    "word_list = list(jieba.cut(s))\n",
    "print('分词总数:', len(word_list))\n",
    "print('示例:', word_list[:20])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[('，', 1345), ('、', 876), ('的', 660), ('。', 617), ('和', 353), ('\\n', 340), ('发展', 212), (' ', 169), ('中国', 168), ('人民', 157), ('建设', 148), ('社会主义', 146), ('是', 139), ('坚持', 130), ('党', 103), ('国家', 90), ('在', 89), ('全面', 88), ('要', 85), ('实现', 83), ('制度', 83), ('推进', 81), ('社会', 80), ('政治', 80), ('特色', 79), ('新', 77), ('为', 72), ('加强', 71), ('体系', 68), ('文化', 66), ('我们', 64), ('时代', 63), ('“', 62), ('”', 62), ('必须', 61), ('经济', 59), ('伟大', 58), ('完善', 51), ('我国', 50), ('（', 50), ('）', 50), ('现代化', 47), ('推动', 47), ('以', 46), ('安全', 46), ('把', 44), ('创新', 44), ('更加', 44), ('民主', 44), ('中华民族', 43), ('工作', 42), ('了', 42), ('改革', 42), ('增强', 39), ('不断', 37), ('战略', 36), ('治理', 36), ('领导', 36), ('问题', 35), ('加快', 35), ('对', 34), ('世界', 34), ('中', 34), ('深化', 34), ('文明', 33), ('！', 33), ('复兴', 32), ('坚决', 32), ('到', 32), ('提高', 32), ('生态', 32), ('基本', 31), ('法治', 31), ('有', 31), ('思想', 30), ('上', 30), ('生活', 30), ('教育', 30), ('不', 29), ('等', 29), ('民族', 29), ('重大', 27), ('能力', 27), ('统一', 27), ('促进', 27), ('；', 27), ('历史', 27), ('更', 27), ('全党', 25), ('构建', 25), ('群众', 25), ('健全', 24), ('国际', 24), ('维护', 24), ('保障', 24), ('二', 23), ('形成', 23), ('人类', 23), ('解决', 23), ('建成', 22), ('团结', 22), ('监督', 22), ('理论', 22), ('斗争', 22), ('实践', 22), ('事业', 21), ('从', 21), ('机制', 21), ('协商', 21), ('保护', 21), ('组织', 21), ('统筹', 20), ('实施', 20), ('体制', 20), ('党内', 20), ('合作', 20), ('一个', 20), ('要求', 20), ('基础', 20), ('支持', 20), ('一切', 20), ('政策', 20), ('大', 19), ('依法治国', 19), ('强国', 19), ('创造', 19), ('共同', 19), ('强化', 19)]\n"
     ]
    }
   ],
   "source": [
    "# 2.统计词频\n",
    "from collections import Counter\n",
    "words_count = Counter(word_list)\n",
    "most_words = words_count.most_common(128)\n",
    "print(most_words)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[('发展', 212), ('中国', 168), ('人民', 157), ('建设', 148), ('社会主义', 146), ('坚持', 130), ('党', 103), ('国家', 90), ('全面', 88), ('实现', 83), ('制度', 83), ('推进', 81), ('社会', 80), ('政治', 80), ('特色', 79), ('新', 77), ('加强', 71), ('体系', 68), ('文化', 66), ('我们', 64), ('时代', 63), ('必须', 61), ('经济', 59), ('伟大', 58), ('完善', 51), ('我国', 50), ('现代化', 47), ('推动', 47), ('安全', 46), ('创新', 44), ('更加', 44), ('民主', 44), ('中华民族', 43), ('工作', 42), ('改革', 42), ('增强', 39), ('不断', 37), ('战略', 36), ('治理', 36), ('领导', 36), ('问题', 35), ('加快', 35), ('世界', 34), ('深化', 34), ('文明', 33), ('复兴', 32), ('坚决', 32), ('提高', 32), ('生态', 32), ('基本', 31), ('法治', 31), ('思想', 30), ('生活', 30), ('教育', 30), ('民族', 29), ('重大', 27), ('能力', 27), ('统一', 27), ('促进', 27), ('历史', 27), ('全党', 25), ('构建', 25), ('群众', 25), ('健全', 24), ('国际', 24), ('维护', 24), ('保障', 24), ('形成', 23), ('人类', 23), ('解决', 23), ('建成', 22), ('团结', 22), ('监督', 22), ('理论', 22), ('斗争', 22), ('实践', 22), ('事业', 21), ('机制', 21), ('协商', 21), ('保护', 21), ('组织', 21), ('统筹', 20), ('实施', 20), ('体制', 20), ('党内', 20), ('合作', 20), ('一个', 20), ('要求', 20), ('基础', 20), ('支持', 20), ('一切', 20), ('政策', 20), ('依法治国', 19), ('强国', 19), ('创造', 19), ('共同', 19), ('强化', 19)]\n"
     ]
    }
   ],
   "source": [
    "# 去除符号和助词、介词等\n",
    "# 这一步我们做了人工干预，手动选出一些忽略词\n",
    "most_words = [words for words in most_words if words[0] not in ' ，、。“”（）！；的和是在要为以把了对中到有上不等更二从大\\n']\n",
    "print(most_words)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1116e47b8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<wordcloud.wordcloud.WordCloud at 0x1094f2978>"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 3.生成词云\n",
    "# 生成词频 dict\n",
    "dict_words = {}\n",
    "for words in most_words:\n",
    "    dict_words[words[0]] = words[1]\n",
    "\n",
    "from wordcloud import WordCloud, ImageColorGenerator\n",
    "\n",
    "# 读入图片\n",
    "from scipy.misc import imread\n",
    "bg_pic = imread('party.png')\n",
    "# 配置词云参数\n",
    "wc = WordCloud(\n",
    "    # 因为中文显示，这里必须提供中文字体文件\n",
    "    font_path = 'zhaozi.ttf',\n",
    "    # 设置背景色\n",
    "    background_color='red',\n",
    "    # 词云形状\n",
    "    mask=bg_pic,\n",
    "    # 最大号字体\n",
    "    max_font_size=100,\n",
    ")\n",
    "# 生成词云\n",
    "wc.generate_from_frequencies(dict_words)\n",
    "# 画图\n",
    "import matplotlib.pyplot as plt\n",
    "image_colors = ImageColorGenerator(bg_pic)\n",
    "#获取到的颜色模板，第二个图\n",
    "plt.imshow(wc.recolor(color_func=image_colors))\n",
    "plt.axis('off')\n",
    "plt.show()\n",
    "\n",
    "# 保存图片\n",
    "wc.to_file('word_freq.jpg')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<div id=\"showhere\" style=\"width:800px; height:600px;\"></div> \n",
       "<script> \n",
       "require.config({ paths:{ echarts: '//cdn.bootcss.com/echarts/3.2.3/echarts.min', } });\n",
       "require(['echarts'],function(ec){\n",
       "var myChart = ec.init(document.getElementById('showhere'));\n",
       "\n",
       "var option = {\n",
       "    title: {\n",
       "        text: '十九大工作报告',\n",
       "    },\n",
       "    tooltip: {\n",
       "        trigger: 'axis',\n",
       "        axisPointer: {\n",
       "            type: 'shadow'\n",
       "        }\n",
       "    },\n",
       "    legend: {\n",
       "        data: ['报告词频']\n",
       "    },\n",
       "    grid: {\n",
       "        left: '3%',\n",
       "        right: '4%',\n",
       "        bottom: '3%',\n",
       "        containLabel: true\n",
       "    },\n",
       "    xAxis: {\n",
       "        type: 'value',\n",
       "        boundaryGap: [0, 0.01]\n",
       "    },\n",
       "    yAxis: {\n",
       "        type: 'category',\n",
       "        data: ['民主', '更加', '创新', '安全', '推动', '现代化', '我国', '完善', '伟大', '经济', '必须', '时代', '我们', '文化', '体系', '加强', '新', '特色', '政治', '社会', '推进', '制度', '实现', '全面', '国家', '党', '坚持', '社会主义', '建设', '人民', '中国', '发展']\n",
       "    },\n",
       "    series: [\n",
       "        {\n",
       "            name: '报告词频',\n",
       "            type: 'bar',\n",
       "            data: [44, 44, 44, 46, 47, 47, 50, 51, 58, 59, 61, 63, 64, 66, 68, 71, 77, 79, 80, 80, 81, 83, 83, 88, 90, 103, 130, 146, 148, 157, 168, 212]\n",
       "        }\n",
       "    ]\n",
       "};\n",
       "\n",
       "myChart.setOption(option);\n",
       "    });\n",
       "</script>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 生成 ECharts 配置数据，拼接出 HTML\n",
    "# 也可直接通过 ECharts 官网生成图表\n",
    "\n",
    "words_list = []\n",
    "count_list =[]\n",
    "for word in most_words[:32]:\n",
    "    words_list.append(word[0])\n",
    "    count_list.append(word[1])\n",
    "\n",
    "from IPython.display import HTML\n",
    "\n",
    "# 指定图表的配置项和数据\n",
    "option = \"\"\"\n",
    "var option = {\n",
    "    title: {\n",
    "        text: '十九大工作报告',\n",
    "    },\n",
    "    tooltip: {\n",
    "        trigger: 'axis',\n",
    "        axisPointer: {\n",
    "            type: 'shadow'\n",
    "        }\n",
    "    },\n",
    "    legend: {\n",
    "        data: ['报告词频']\n",
    "    },\n",
    "    grid: {\n",
    "        left: '3%',\n",
    "        right: '4%',\n",
    "        bottom: '3%',\n",
    "        containLabel: true\n",
    "    },\n",
    "    xAxis: {\n",
    "        type: 'value',\n",
    "        boundaryGap: [0, 0.01]\n",
    "    },\n",
    "    yAxis: {\n",
    "        type: 'category',\n",
    "        data: \"\"\" + str(words_list[::-1]) + \"\"\"\n",
    "    },\n",
    "    series: [\n",
    "        {\n",
    "            name: '报告词频',\n",
    "            type: 'bar',\n",
    "            data: \"\"\" + str(count_list[::-1]) + \"\"\"\n",
    "        }\n",
    "    ]\n",
    "};\n",
    "\"\"\"\n",
    "\n",
    "head = \"\"\"\n",
    "<div id=\"showhere\" style=\"width:800px; height:600px;\"></div> \n",
    "<script> \n",
    "require.config({ paths:{ echarts: '//cdn.bootcss.com/echarts/3.2.3/echarts.min', } });\n",
    "require(['echarts'],function(ec){\n",
    "var myChart = ec.init(document.getElementById('showhere'));\n",
    "\"\"\"\n",
    "\n",
    "tail = \"\"\"\n",
    "myChart.setOption(option);\n",
    "    });\n",
    "</script>\n",
    "\"\"\"\n",
    "\n",
    "HTML(head + option + tail)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
